package com.iamteer.day22;

import java.io.File;

/**
主要回顾：递归

递归：函数自己调用自己

 */
public class Recuresion {

	public static void main(String[] args) {
//		System.out.println(factorial(5));
//		System.out.println(test(5));
		
		File dir = new File("test");
//		listFiles1(dir);
//		listFiles2(dir, "");
		listFiles3(dir, "--| ");
	}

	public static int factorial(int n) {
		int f = 1;
		for (int i = 2; i <= n; i++) {
			f = f*i;
		}
		
		return f;
	}
	
	public static int test(int n) {
		System.out.println("n = " + n);
		if (n == 1) {
			return 1;
		} else {
			return n * test(n-1);
		}
	}
	
	public static void listFiles1(File dir) {
		File[] files = dir.listFiles();
		for (File file : files) {
			if (file.isFile()) {
				System.out.println(file.getName());
			} else if (file.isDirectory()) {
				listFiles1(file);
			}
		}
	}
	
	public static void listFiles2(File dir, String indent) {
		File[] files = dir.listFiles();
		for (File file : files) {
			if (file.isFile()) {
				System.out.println(indent + file.getName());
			} else if (file.isDirectory()) {
				System.out.println(indent + file.getName());
				listFiles2(file, indent+"--");
			}
		}
	}
	
	public static void listFiles3(File dir, String indent) {
		File[] files = dir.listFiles();		//列出所有文件
		for (File file : files) {
			if (file.isFile()) {				//如果是文件，则直接列出
				System.out.println(indent + file.getName());
			} else if (file.isDirectory()) {	//如果是文件夹，则继续遍历
				System.out.println(indent + file.getName());
				listFiles3(file, "--"+indent);
			}
		}
	}
	
	//删除非空文件夹！数据无价，谨慎使用！！！
	public static void delete(File dir) {
		File[] files = dir.listFiles();	//列出所有子文件
		for (File file : files) {		//遍历子文件
			 if (file.isFile()) {		//如果是文件，直接删除
				file.delete();
			} else {					//否则，进入文件夹，先删除文件
				delete(file);
			}
		}
		//删除完子文件后，把 dir 文件夹也删除
		dir.delete();
	}
	
}
